#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include "KgTestLogDb.h"

QT_BEGIN_NAMESPACE
namespace Ui {
class MainWindow;
}
QT_END_NAMESPACE

struct KpTestInfo;

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private slots:
    void doNewDir();
    void doNewWord();
    void doEdit();
    void doRemove();
    void doTest();
    void showHistory();
    void showMiswords();
    void itemActivated(const QModelIndex& index);
    void anchorClicked(const QUrl& url);

private:
    // 弹出词条编辑对话框，用于新建或者编辑词条
    bool showWordEditDlg_(const QModelIndex& parent, int row, bool newWord);

    QString formatBrowserText_(const QModelIndex& index);

    void collectWords_(const QModelIndex& dir, QVector<QModelIndex>& words) const;

    // 将@words中的错词前置
    // @count: 希望前置的错词数量
    void pullMiswords_(QVector<QModelIndex>& words, int count) const;

    // @words: 用于生成考卷的词库
    // @amount: 考题数目
    // @mode: 考核类型（听写，音标译单词，英译中，中译英）
    void showTestPage_(QVector<QModelIndex>& words, int amount, int mode);

    void showDetailPage_(const KpTestInfo& ti, const QVector<KgTestLogDb::KpTestDetail>& tds);

private:
    Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
